package cn.edu.jxau.test;

import java.util.Arrays;
import java.util.Comparator;

/**
 * 由题意可知，所使用的的算法必须是稳定的
 * 
 * @author 付大石
 */
public class Main {

    public static void main(String[] args) {

        String[] arr = new String[] { "1-Oct-28 3500000", "2-Oct-28 3850000", "30-Dec-99 554680000",
                "31-Dec-99 374049984", "4-Jan-00 100900000", "5-Jan-00 1085500032" };
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void sort(String[] arr) {

//        // 对day排序 //
//        sort(arr, new Comparator<String>() {
//            @Override
//            public int compare(String s1, String s2) {
//                int day1 = getDay(s1);
//                int day2 = getDay(s2);
//                return day1 - day2;
//            }
//        });
//
//        // 对month排序 //
//        sort(arr, new Comparator<String>() {
//            @Override
//            public int compare(String s1, String s2) {
//                int month1 = getMonth(s1);
//                int month2 = getMonth(s2);
//                return month1 - month2;
//            }
//        });
//
//        // 对id排序 //
//        sort(arr, new Comparator<String>() {
//            @Override
//            public int compare(String s1, String s2) {
//                int id1 = getID(s1);
//                int id2 = getID(s2);
//                return id1 - id2;
//            }
//        });

        // 对amount排序 //
        sort(arr, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                int amount1 = getAmount(s1);
                int amount2 = getAmount(s2);
                return amount1 - amount2;
            }
        });
    }

    private static int getDay(String order) {
        return Integer.parseInt(order.split(" ")[0].split("-")[0]);
    }

    private static int getMonth(String order) {
        String month = order.split(" ")[0].split("-")[1];
        int m = 0;
        switch (month) {
        case "Jan":
            m = 1;
            break;
        case "Oct":
            m = 10;
            break;
        case "Dec":
            m = 12;
            break;
        default:
            throw new RuntimeException("月份未补全");
        }
        return m;
    }

    private static int getID(String order) {
        return Integer.parseInt(order.split(" ")[0].split("-")[2]);
    }

    private static int getAmount(String order) {
        return Integer.parseInt(order.split(" ")[1]);
    }

    public static void sort(String[] arr, Comparator<String> comp) {

        for (int i = 1; i < arr.length; i++) {
            int j = i;
            String temp = arr[j];
            while (j > 0 && comp.compare(temp, arr[j - 1]) < 0) {
                arr[j] = arr[j - 1];
                j--;
            }
            arr[j] = temp;
        }
    }
}